home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / bin / gifburst < prev    next >
Text File  |  2006-01-09  |  2KB  |  76 lines

  1. #!/usr/bin/perl
  2. #
  3. # Split a GIF image into four or six pieces, dividing in half horizontally
  4. # and into halves or thirds vertically.  
  5. #
  6. # The -s option controls the number of pieces.  The -p option controls the
  7. # amount of overlap (in pixels) at the edges of pieces.
  8.  
  9. # Set to flush on print.
  10. $| = 1;
  11.  
  12. require 'getopts.pl';
  13.  
  14. # How many pieces?
  15. $split = 4;
  16. &Getopts("s:p:");
  17. $split = $opt_i if $opt_i;
  18. $overlap = $opt_p if $opt_p;
  19.  
  20. $nm=$ARGV[0];
  21. print "Bursting image $nm.gif...\n";
  22.  
  23. $stats=`giftext $nm.gif | grep Width | head -n1`;
  24. $stats =~ /Width = ([0-9]+), Height = ([0-9]+)/;
  25. $width=$1;
  26. $height=$2;
  27. print "Width is $width, height $height\n";
  28.  
  29. $overlap = 20;
  30.  
  31. if ($split == 6)
  32. {
  33.     $a = int($width / 2) + $overlap;
  34.     $b = int($width / 2) - $overlap;
  35.     $c = int($width - 1);
  36.     $d = int($height / 3)     - $overlap;
  37.     $e = int($height / 3) * 2 - $overlap;
  38.     $f = int($height / 3)     + $overlap;
  39.     $g = int($height / 3) * 2 + $overlap;
  40.     $h = int($height - 1);
  41.  
  42.     $regions[1] = "0   0    $a   $f";
  43.     $regions[2] = "0   $d   $a   $g";
  44.     $regions[3] = "0   $e   $a   $h";
  45.     $regions[4] = "$b  0    $c   $f";
  46.     $regions[5] = "$b  $d   $c   $g";
  47.     $regions[6] = "$b  $e   $c   $h";
  48. }
  49. elsif ($split == 4)
  50. {
  51.     $a = int($width / 2) + $overlap;
  52.     $b = int($width / 2) - $overlap;
  53.     $c = int($width - 1);
  54.     $d = int($height / 2) - $overlap;
  55.     $e = int($height / 2) + $overlap;
  56.     $f = int($height - 1);
  57.  
  58.     $regions[1] = "0   0    $a   $e";
  59.     $regions[2] = "0   $d   $a   $f";
  60.     $regions[3] = "$b  0    $c   $e";
  61.     $regions[4] = "$b  $d   $c   $f";
  62. }
  63. else
  64. {
  65.     die("I don't know how to make that many pieces.\n");
  66. }
  67.  
  68. for ($i = 1; $i <= $split; $i++)
  69. {
  70.     print "${nm}-${i}: ${regions[$i]}\n";
  71.     system("gifclip -i $regions[$i]   ${nm}.gif >${nm}-${i}.gif");
  72. }
  73.  
  74. print "$nm done\n"
  75.  
  76.